var app = angular.module('impressaoHorario', []);

app.controller('impressaoHorarioController', [ '$scope', function($scope) {
	var horarioCtrl = this;

	this.curso = {};
	this.semestre = {};
	this.aluno = {};
	this.horario = getHorarioVazio();
	this.disciplinasCurso = [];
	
	this.getAluno = function() {
		var prontuarioAluno = "${prontuario}";

		if (prontuarioAluno.trim() != "") {
			showLoading();
			$.ajax({
				url : "${pageContext.request.contextPath}/impressao/getAluno",
				method : "POST",
				data : {
					"prontuario" : prontuarioAluno
				}
			}).success(function(aluno, textStatus, jqXHR) {
				$scope.$apply(function() {
					if (aluno != undefined && aluno.semestre != undefined) {
						horarioCtrl.disciplinasCurso = new Disciplinas(aluno.semestre.curso.codigo);
					}
				});

				$scope.$apply(function() {

					/*
					 * Usa o horario do aluno por preferência, mas se ele não
					 * existir, usa o do semestre
					 */
					if (aluno.horario != undefined) {
						// atribui aos combobox e à  página o que está salvo no
						// banco
						horarioCtrl.aluno.prontuario = aluno.prontuario;
						horarioCtrl.aluno.nome = aluno.nome;
						horarioCtrl.semestre = aluno.semestre;
						setDescricaoSemestre(horarioCtrl.semestre);
						horarioCtrl.curso = aluno.semestre.curso;

						horarioCtrl.horario = aluno.horario;
					} else {
						horarioCtrl.aluno.prontuario = "";
						horarioCtrl.aluno.nome = "";
						horarioCtrl.semestre = "";
						horarioCtrl.semestre.descricao = "";
						horarioCtrl.curso = "";
						horarioCtrl.horario = getHorarioVazio();
						hideLoading();
						alert("Prontuário inválido ou o aluno não possui nenhum horário personalizado cadastrado.");
					}
				});

				hideLoading();
			}).error(function(jqXHR, textStatus, errorThrown) {
				hideLoading();
				alert("Prontuário Inválido");
			});
		}
	};
	this.getAluno();
	
	this.alterarHorario = function(){
		window.location = "${pageContext.request.contextPath}/aluno/";
	}
	
	this.imprimirHorario = function(){
		showLoading();
		$.ajax({
			url : "${pageContext.request.contextPath}/impressao/imprimirHorario",
			method : "POST"
		}).success(function(aluno, textStatus, jqXHR) {
			hideLoading();
		}).error(function(jqXHR, textStatus, errorThrown) {
			hideLoading();
			alert("Prontuário Inválido");
		});
	}
	
} ]);

// Carrega as disciplinas do curso num array
Disciplinas = function(idCurso) {
	var disciplinas = {};
	showLoading();
	$.ajax({
		url : "${pageContext.request.contextPath}/impressao/getDisciplinas",
		method : "POST",
		async : false,
		data : {
			"idCurso" : idCurso
		},
		success : function(data, textStatus, jqXHR) {
			disciplinas = data;
		},
		error : function(jqXHR, textStatus, errorThrown) {
			consoleError("Carregar Disciplinas", errorThrown);
		}
	});

	hideLoading();
	return disciplinas;
};
